package com.android.questions.ui.dialog;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.view.View;

import androidx.annotation.NonNull;

import com.android.base.util.ActivityClickUtil;
import com.android.questions.R;
import com.android.questions.databinding.DialogPolicyBinding;

/**
 * FileName: DialogPolicy
 * Author: admin
 * Date: 2021/11/1 16:40
 * Description:
 */
public class DialogPolicy extends Dialog {

    private DialogPolicyBinding policyBinding;
    private final OnPolicyListener policyLister;

    public DialogPolicy(Context mContext, OnPolicyListener listener) {
        super(mContext, R.style.dialog_loading);
        this.policyLister = listener;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        policyBinding = DialogPolicyBinding.inflate(getLayoutInflater());
        setContentView(policyBinding.getRoot());
        setCancelable(false);
        setCanceledOnTouchOutside(false);
        initView();
    }

    private void initView() {
        ActivityClickUtil.getInstance().clear();

        String content = "欢迎您下载本应用，我们非常重视您的个人信息和隐私保护，请在使用我们的服务前，详细阅读并同意《用户协议》和《隐私政策》。\n\n" +
                "为向您提供更好的服务，在使用我们的产品前，我们会向您申请必要的权限和信息，您可以选择同意或者拒绝权限申请，如果拒绝可能会导致部分应用体验异常。权限和信息包括:\n\n" +
                "【存储权限】：目的是为了实现账号、图片的缓存和使用，图片的保存与分享;\n\n" +
                "【位置信息】：为了APP启动时缓存首条本地化内容和广告，我们可能会申请您的位置权限(可选)用于向您推荐可能感兴趣的信息，仅通过IP地址确定城市/区县等信息，不会收集精确位置信息;\n\n" +
                "【设备信息】：读取Android-ID、IMEI、OAID、Mac地址信息，目的是为了验证用户身份保障账号安全;\n\n" +
                "在获得您的同意后，由于部分设备机型及系统的原因，您之前使用产品的相关功能产生的收集信息的行为可能无法停止，所以我们可能在静默状态下或后台运行时获取您的手机MAC地址以及设备信息，我们集成的部分广告SDK也会在您的同意后，在静默状态下或后台运行时获取您的设备信息以及MAC地址，用以向您展示内容;\n\n" +
                "注：未经您的同意，我们不会将您的个人信息共享给第三方。";

        //设置部分文字点击事件
        ClickableSpan clickablePolicy = new ClickableSpan() {
            @Override
            public void onClick(@NonNull View widget) {
                if (ActivityClickUtil.getInstance().isFastClick()) {
                    //防止用户快速点击
                    return;
                }
                if (policyLister != null) {
                    policyLister.onPolicy();
                }
            }

            @Override
            public void updateDrawState(@NonNull TextPaint ds) {
                super.updateDrawState(ds);
                ds.setUnderlineText(false);
            }
        };
        ClickableSpan clickableUser = new ClickableSpan() {
            @Override
            public void onClick(@NonNull View widget) {
                if (ActivityClickUtil.getInstance().isFastClick()) {
                    //防止用户快速点击
                    return;
                }
                if (policyLister != null) {
                    policyLister.onUser();
                }
            }

            @Override
            public void updateDrawState(@NonNull TextPaint ds) {
                super.updateDrawState(ds);
                ds.setUnderlineText(false);
            }
        };

        //设置部分文字颜色
        ForegroundColorSpan foregroundPolicy =
                new ForegroundColorSpan(Color.parseColor("#FC937E"));
        ForegroundColorSpan foregroundUser =
                new ForegroundColorSpan(Color.parseColor("#FC937E"));

        //设置部分文字颜色
        ForegroundColorSpan foregroundPermission =
                new ForegroundColorSpan(Color.parseColor("#666666"));

        SpannableStringBuilder style = new SpannableStringBuilder();
        //设置文字
        style.append(content);

        style.setSpan(clickableUser, 45, 51, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        style.setSpan(clickablePolicy, 52, 58, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        policyBinding.tvContent.setText(style);

        style.setSpan(foregroundPolicy, 45, 51, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        style.setSpan(foregroundUser, 52, 58, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        style.setSpan(foregroundPermission, 142, 326, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        //配置给TextView
        policyBinding.tvContent.setMovementMethod(LinkMovementMethod.getInstance());
        policyBinding.tvContent.setText(style);

        policyBinding.tvAgree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ActivityClickUtil.getInstance().isFastClick()) {
                    //防止用户快速点击
                    return;
                }
                dismiss();
                if (policyLister != null) {
                    policyLister.onAgreed();
                }
            }
        });
        policyBinding.tvDisagree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ActivityClickUtil.getInstance().isFastClick()) {
                    //防止用户快速点击
                    return;
                }
                dismiss();
                if (policyLister != null) {
                    policyLister.onCancel();
                }
            }
        });

    }

    public interface OnPolicyListener {
        void onPolicy(); //隐私政策

        void onUser(); //用户协议

        void onCancel(); //再看看

        void onAgreed(); //同意
    }

}